package top101K.linkedList;

/**
 * @Author quan
 * @Description 找到链表中倒数第k个节点
 * @Date 2023/7/29 21:29
 */

/**
 * 挺简单的，求链表长度，判断与k的关系：
 * （1）如果链表节点个数<k，直接返回null；
 * （2）如果链表节点个数>k，遍历走到k的位置，该节点就是要返回的子链表的头结点。
 */
public class Demo8_FindKthToTail {
    public static ListNode FindKthToTail(ListNode pHead, int k) {
        // write code here
        // case1:链表的长度<k，返回长度为0的链表
        int count = 0;
        ListNode pre = pHead;
        while (pre!=null){
            count++;
            pre = pre.next;//注意这里要不断更新节点，刚开始没有写这一条，程序卡死了
        }
        if(count<k){
            return null;
        }
        //走到k的前一个结点
        for (int i = 0; i < count-k; i++) {
            pHead = pHead.next;
        }
        return pHead;
    }
}
